package 常用方法.String对象的比较.方法按照字典序比较;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-20
 * Time: 10:43
 */
/*
boolean equals(Object anObject) 方法：按照字典序比较
字典序：字符大小的顺序
String类重写了父类Object中的equals方法，Object中的equals默认是按照 == 比较，String重写equals方法后，按照如下规则进行比较，比如：s1.equals(s2)
 */
public class Test {
/*    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }*/
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        String s3 = new String("Hello");

        //s1、s2、s3引用的是三个不同的对象，因此==比较的结果全部是false
        System.out.println(s1 == s2);//false
        System.out.println(s1 == s3);//false

        /**
         * equals比较：String对象中逐个字符
         * 虽然s1和s2引用的不是同一个对象，但是两个对象中放置的内容相同，因此输出的是true
         * s1和s3引用的不是同一个对象，而且两个对象中的内容也不同，因此输出false
         */
        System.out.println(s1.equals(s2));//true
        System.out.println(s1.equals(s3));//false
    }
}
